/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.domain;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import co.gov.medellin.sdep.sisdep.regulacion.exception.FeriaDecembrinaFormException;
import co.gov.medellin.sdep.sisdep.regulacion.exception.FeriaDecembrinaFormRuntimeException;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaDecDetalleItemService;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaDecDistribucionService;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaDecNotasService;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaDecSorteoService;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaDecSteoVeedorService;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaDecembrinaFormService;
import co.gov.medellin.sdep.sisdep.common.AppConstants;
import co.gov.medellin.sdep.sisdep.model.FeriaDecembrinaForm;

/**
 * @author Usuario
 * 
 */
public class FeriaDecembrinaFormController extends BaseController implements
		Serializable {

	/**
	 * generated serial version
	 */
	private static final long serialVersionUID = -3285110767384990403L;

	/**
	 * Constructor por defecto, inicializa los elemento basicos del Controlador
	 */
	public FeriaDecembrinaFormController() {
		this.feriaDecembrinaFormListModel = new ListDataModel();
	}

	/** bean para el manejo del formulario de busqueda FeriaDecembrinaForm */
	private FeriaDecembrinaForm feriaDecembrinaFormSearch = new FeriaDecembrinaForm();

	/** Objeto contenedor del listado de FeriaDecembrinaForm luego de una consulta. */
	private DataModel feriaDecembrinaFormListModel;

	/** bean para el manejo del formulario de creacion/edicion. FeriaDecembrinaForm */
	private FeriaDecembrinaForm feriaDecembrinaForm = new FeriaDecembrinaForm();

	/** instancia de servicio feriaDecembrinaFormService */
	private IFeriaDecembrinaFormService feriaDecembrinaFormService;

	
	FeriaDecDistribucionController feriaDecDistribucionController;	

	FeriaDecDetalleItemController feriaDecDetalleItemController ;
	
	FeriaDecNotasController feriaDecNotasController;
	
	FeriaDecSorteoController feriaDecSorteoController ;

	FeriaDecSteoVeedorController feriaDecSteoVeedorController ;
	
	
	
	// --------------------------------------------------------------------
	// --- metodos para atender acciones init()
	// --------------------------------------------------------------------

	/**
	 * 
	 * @return String
	 */
	public String searchFeriaDecembrinaFormByKey() {
		String msg = "";
		try {
			List valores = null;
			valores = getFeriaDecembrinaFormService().load(1, 10,
					this.feriaDecembrinaFormSearch);
			this.feriaDecembrinaFormListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaDecembrinaFormListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaDecembrinaFormListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.FERIA_DECEMBRINA_FORM_SEARCH_VIEW;
	}

	/**
	 * 
	 * @return String
	 */
	public String searchFeriaDecembrinaFormByAnio() {
		String msg = "";
		try {
			List valores = null;
			valores = getFeriaDecembrinaFormService().loadByAnio(1, 10,
					this.feriaDecembrinaFormSearch);
			this.feriaDecembrinaFormListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaDecembrinaFormListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaDecembrinaFormListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.FERIA_DECEMBRINA_FORM_SEARCH_VIEW;
	}

	
	/**
	 * 
	 * @return
	 */
	public String create() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.feriaDecembrinaForm.getId().longValue() == 0L) {
				getFeriaDecembrinaFormService().insert(this.feriaDecembrinaForm);
				msg = AppConstants.SUCCESS_CREATE;
			}
		} catch (FeriaDecembrinaFormException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (FeriaDecembrinaFormRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- feriaDecembrinaForm " + msg, null, null);
		return AppConstants.FERIA_DECEMBRINA_FORM_SEARCH_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String update() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.feriaDecembrinaForm.getId().longValue() != 0L) {
				getFeriaDecembrinaFormService().update(this.feriaDecembrinaForm);
				msg = AppConstants.SUCCESS_UPDATE;
			}
		} catch (FeriaDecembrinaFormException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (FeriaDecembrinaFormRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- Valor Tipo Maestra " + msg, null, null);
		return AppConstants.FERIA_DECEMBRINA_FORM_SEARCH_VIEW;
	}


	public String distribucionFeriaDecembrinaForm() {
		Map params = getExternalContext().getRequestParameterMap();
		String feriaDecembrinaFormDataIndex = (String) params
				.get("feriaDecembrinaFormDataIndex");
		this.feriaDecembrinaForm = (FeriaDecembrinaForm) ((List) this.feriaDecembrinaFormListModel
				.getWrappedData())
				.get(Integer.parseInt(feriaDecembrinaFormDataIndex));
				
		getFeriaDecDistribucionController().feriaDecDistribucionSearch.setAgno(feriaDecembrinaFormSearch.getAgno());
		getFeriaDecDistribucionController().feriaDecDistribucionSearch.setIdFeriaDecembrinaForm(feriaDecembrinaForm.getId());
		getFeriaDecDistribucionController().searchFeriaDecembrinaFormByAnio(getFeriaDecDistribucionController().getFeriaDecDistribucionService());
		return AppConstants.FERIA_DEC_DISTRIBUCION_SEARCH_VIEW;
	}

	public String itemsFeriaDecembrinaForm() {
		Map params = getExternalContext().getRequestParameterMap();
		String feriaDecembrinaFormDataIndex = (String) params
				.get("feriaDecembrinaFormDataIndex");
		this.feriaDecembrinaForm = (FeriaDecembrinaForm) ((List) this.feriaDecembrinaFormListModel
				.getWrappedData())
				.get(Integer.parseInt(feriaDecembrinaFormDataIndex));
						
		getFeriaDecDetalleItemController().feriaDecDetalleItemSearch.setAgno(feriaDecembrinaFormSearch.getAgno());
		getFeriaDecDetalleItemController().feriaDecDetalleItemSearch.setIdFeriaDecembrinaForm(feriaDecembrinaForm.getId());
		getFeriaDecDetalleItemController().searchFeriaDecDetalleItemByAgno(getFeriaDecDetalleItemController().getFeriaDecDetalleItemService());
		return AppConstants.FERIA_DEC_DETALLE_ITEM_SEARCH_VIEW;
	}

	public String notasFeriaDecembrinaForm() {
		Map params = getExternalContext().getRequestParameterMap();
		String feriaDecembrinaFormDataIndex = (String) params
				.get("feriaDecembrinaFormDataIndex");
		this.feriaDecembrinaForm = (FeriaDecembrinaForm) ((List) this.feriaDecembrinaFormListModel
				.getWrappedData())
				.get(Integer.parseInt(feriaDecembrinaFormDataIndex));
		
		getFeriaDecNotasController().feriaDecNotasSearch.setAgno(feriaDecembrinaFormSearch.getAgno());
		getFeriaDecNotasController().feriaDecNotasSearch.setIdFeriaDecembrinaForm(feriaDecembrinaForm.getId());
		getFeriaDecNotasController().searchFeriaDecNotasByAnio(getFeriaDecNotasController().getFeriaDecNotasService());
		return AppConstants.FERIA_DEC_NOTAS_SEARCH_VIEW;
	}
	
	public String sorteoFeriaDecembrinaForm() {
		Map params = getExternalContext().getRequestParameterMap();
		String feriaDecembrinaFormDataIndex = (String) params
				.get("feriaDecembrinaFormDataIndex");
		this.feriaDecembrinaForm = (FeriaDecembrinaForm) ((List) this.feriaDecembrinaFormListModel
				.getWrappedData())
				.get(Integer.parseInt(feriaDecembrinaFormDataIndex));
		
		getFeriaDecSorteoController().feriaDecSorteoSearch.setAgno(feriaDecembrinaFormSearch.getAgno());
		getFeriaDecSorteoController().feriaDecSorteoSearch.setIdFeriaDecembrinaForm(feriaDecembrinaForm.getId());
		getFeriaDecSorteoController().searchFeriaDecSorteoByAnio(getFeriaDecSorteoController().getFeriaDecSorteoService());
		return AppConstants.FERIA_DEC_SORTEO_SEARCH_VIEW;
	}
	// --------------------------------------------------------------------
	// --- metodos para atender acciones end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public String createFeriaDecembrinaForm() {
		feriaDecembrinaForm = new FeriaDecembrinaForm();
		feriaDecembrinaForm.setId(new Long(0L));
		feriaDecembrinaForm.setCodigo("");
		return AppConstants.FERIA_DECEMBRINA_FORM_CREATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String updateFeriaDecembrinaForm() {
		Map params = getExternalContext().getRequestParameterMap();
		String feriaDecembrinaFormDataIndex = (String) params
				.get("feriaDecembrinaFormDataIndex");
		this.feriaDecembrinaForm = (FeriaDecembrinaForm) ((List) this.feriaDecembrinaFormListModel
				.getWrappedData())
				.get(Integer.parseInt(feriaDecembrinaFormDataIndex));
		return AppConstants.FERIA_DECEMBRINA_FORM_UPDATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String cancelFeriaDecembrinaForm() {
		return AppConstants.FERIA_DECEMBRINA_FORM_SEARCH_VIEW;
	}

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- getters and setters init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public FeriaDecembrinaForm getFeriaDecembrinaFormSearch() {
		return feriaDecembrinaFormSearch;
	}

	/**
	 * 
	 * @param feriaDecembrinaFormSearch
	 */
	public void setferiaDecembrinaFormSearch(FeriaDecembrinaForm feriaDecembrinaFormSearch) {
		this.feriaDecembrinaFormSearch = feriaDecembrinaFormSearch;
	}

	/**
	 * 
	 * @return
	 */
	public DataModel getferiaDecembrinaFormListModel() {
		return feriaDecembrinaFormListModel;
	}

	/**
	 * 
	 * @param feriaDecembrinaFormListModel
	 */
	public void setferiaDecembrinaFormListModel(DataModel feriaDecembrinaFormListModel) {
		this.feriaDecembrinaFormListModel = feriaDecembrinaFormListModel;
	}

	/**
	 * 
	 * @return
	 */
	public FeriaDecembrinaForm getFeriaDecembrinaForm() {
		return feriaDecembrinaForm;
	}

	/**
	 * 
	 * @param feriaDecembrinaForm
	 */
	public void setferiaDecembrinaForm(FeriaDecembrinaForm feriaDecembrinaForm) {
		this.feriaDecembrinaForm = feriaDecembrinaForm;
	}

	/**
	 * obtencion del servicio feriaDecembrinaFormService
	 * 
	 * @return
	 */
	public IFeriaDecembrinaFormService getFeriaDecembrinaFormService() {
		return feriaDecembrinaFormService;
	}

	/**
	 * establecimiento del servicio feriaDecembrinaFormService, la inyeccion de la
	 * dependencia la cubre SpringFramework
	 * 
	 * @param feriaDecembrinaFormService
	 */
	public void setFeriaDecembrinaFormService(
			IFeriaDecembrinaFormService feriaDecembrinaFormService) {
		this.feriaDecembrinaFormService = feriaDecembrinaFormService;
	}

	public FeriaDecDistribucionController getFeriaDecDistribucionController() {
		return feriaDecDistribucionController;
	}

	public void setFeriaDecDistribucionController(
			FeriaDecDistribucionController feriaDecDistribucionController) {
		this.feriaDecDistribucionController = feriaDecDistribucionController;
	}

	public FeriaDecDetalleItemController getFeriaDecDetalleItemController() {
		return feriaDecDetalleItemController;
	}

	public void setFeriaDecDetalleItemController(
			FeriaDecDetalleItemController feriaDecDetalleItemController) {
		this.feriaDecDetalleItemController = feriaDecDetalleItemController;
	}

	public FeriaDecNotasController getFeriaDecNotasController() {
		return feriaDecNotasController;
	}

	public void setFeriaDecNotasController(
			FeriaDecNotasController feriaDecNotasController) {
		this.feriaDecNotasController = feriaDecNotasController;
	}

	public FeriaDecSorteoController getFeriaDecSorteoController() {
		return feriaDecSorteoController;
	}

	public void setFeriaDecSorteoController(
			FeriaDecSorteoController feriaDecSorteoController) {
		this.feriaDecSorteoController = feriaDecSorteoController;
	}

	public FeriaDecSteoVeedorController getFeriaDecSteoVeedorController() {
		return feriaDecSteoVeedorController;
	}

	public void setFeriaDecSteoVeedorController(
			FeriaDecSteoVeedorController feriaDecSteoVeedorController) {
		this.feriaDecSteoVeedorController = feriaDecSteoVeedorController;
	}

	// --------------------------------------------------------------------
	// --- getters and setters end()
	// --------------------------------------------------------------------


}
